const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')

let mainWindow

function resolvePreloadPath() {
    if (process.env.NODE_ENV === 'development') {
        return path.join(__dirname, 'preload.js')
    }
    return path.join(app.getAppPath(), 'out', 'preload', 'index.js')
}

function resolveHtmlPath() {
    if (process.env.NODE_ENV === 'development') {
        return 'http://localhost:5173'
    }
    return path.join(app.getAppPath(), 'out', 'renderer', 'index.html')
}

function createWindow() {
    mainWindow = new BrowserWindow({
        width: 1024, // 窗口宽度
        height: 768, // 窗口高度
        autoHideMenuBar: true, // 自动隐藏菜单栏
        webPreferences: {
            nodeIntegration: false, // 禁用 Node.js 集成
            contextIsolation: true, // 启用上下文隔离
            preload: resolvePreloadPath(), // 预加载脚本路径
            webSecurity: true, // 启用网络安全
            allowRunningInsecureContent: false, // 禁止运行不安全的内容
            enableRemoteModule: false // 禁用远程模块
        },
        show: false, // 初始不显示窗口
        backgroundColor: '#fff' // 窗口背景颜色
    })

    mainWindow.webContents.session.webRequest.onHeadersReceived((details, callback) => {
        callback({
            responseHeaders: {
                ...details.responseHeaders,
                'Content-Security-Policy': [
                    "default-src 'self';" +
                    "script-src 'self';" +
                    "style-src 'self' 'unsafe-inline';" +
                    "img-src 'self' data: https:;"
                ]
            }
        });
    });

    mainWindow.once('ready-to-show', () => {
        mainWindow.show()
    })

    const htmlPath = resolveHtmlPath()
    if (htmlPath.startsWith('http')) {
        mainWindow.loadURL(htmlPath)
    } else {
        mainWindow.loadFile(htmlPath)
    }

    if (process.env.NODE_ENV === 'development') {
        mainWindow.webContents.openDevTools()
    }

    mainWindow.on('close', (e) => {
        e.preventDefault()
        mainWindow.webContents.send('show-exit-dialog')
    })
}

app.whenReady().then(createWindow)

ipcMain.on('exit-choice', (event, data) => {
    const { choice, remember } = data
    
    if (remember) {
        // 保存用户选择到配置文件
        // 这里可以使用 electron-store 等库来持久化存储
    }
    
    if (choice === 0) {
        mainWindow.hide()
    } else {
        app.exit(0)
    }
})

app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
        app.quit()
    }
})

app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) {
        createWindow()
    }
})

// IPC 处理程序
ipcMain.handle('login', async (event, data) => {
  // 处理登录逻辑
  console.log('登录信息：', data)
  return { success: true }
})

ipcMain.handle('show-advanced-settings', () => {
  // 处理高级设置
  console.log('显示高级设置')
})

ipcMain.handle('show-history', () => {
  // 处理历史记录
  console.log('显示历史记录')
})

ipcMain.handle('show-about', () => {
  // 处理关于信息
  console.log('显示关于信息')
})